Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - [Delphi 7 enterprise] Problema crash applicazione
Forum - Delphi - [Delphi 7 enterprise] Problema crash applicazione

Avatar
Track (Normal User)
Rookie


Messaggi: 30
Iscritto: 23/01/2011

Segnala al moderatore
Postato alle 22:49
Martedì, 24/05/2011
Salve a tutti, lavoro ormai da mesi sulle connessioni, in particolare sulla connessione inversa, di recente sto creando un programma che permette alla persona che ha installato il server, di chattare, di farsi stampare scritte, e molte altre funzioni simpatiche come per esempio il supporto remoto per creare pagine html :),
questa applicazione usa 8 socket, il problema è che il server dopo un tot di tempo ha dei malfunzionamenti, e 1 o 2 porte, dallo stato porte risultano essere non attive, in più se si lascia il server acceso per troppo tempo, si vede questo errore,

http://img823.imageshack.us/img823/8441/proho.png

Grazie anticipatamente..
p.s.:"il progetto non aggiornato che avevo, teneva 15 socket, ma il server sembra durare di più rispetto ad ora che ne ha 8"
                                                  /-----------/
Mi scuso per non aver messo ulteriori spiegazioni, allora il server dura all'incirca 35 minuti, poi inizia a dare problemi,
ecco cosa è successo:
12:19 = ho aperto il server
12:54 = il server ha iniziato a dare problemi, ma se non mi fossi connesso non avrebbe dato errori. L'ultima porta risulta essere non attiva quando prima lo era
13:00 = ha iniziato ad aprirmi  per molte volte quell'errore mostrato sopra

screen dello stato porte (in giallo quella principale) :"http://imageshack.us/m/864/2281/portaf.png


questo codice che uso per non far dare errori al socket principale (Porta: 5000)

Codice sorgente - presumibilmente Delphi

  1. procedure TForm2.Timer2Timer(Sender: TObject);
  2. begin
  3. clientsocket2.Active:=false;
  4. timer1.Enabled:=true;
  5. timer2.Enabled:=false;
  6. end;
  7.  
  8. procedure TForm2.Timer1Timer(Sender: TObject);
  9. begin
  10. clientsocket2.host:='127.0.0.1';
  11. clientsocket2.Port:=5000;
  12. clientsocket2.Active:=true;
  13. clientsocket1.host:='127.0.0.1';
  14. clientsocket1.Port:=5555;
  15. clientsocket1.Active:=true;
  16. timer1.Enabled:=false;
  17. end;
  18.  
  19. procedure TForm2.ClientSocket2Disconnect(Sender: TObject;
  20.   Socket: TCustomWinSocket);
  21. begin
  22. timer2.Enabled:=true;
  23. end;
  24.  
  25. procedure TForm2.ClientSocket2Error(Sender: TObject;
  26.   Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  27.   var ErrorCode: Integer);
  28. begin
  29. errorcode:=0;
  30. timer2.Enabled:=true;
  31. end;
  32.  
  33. procedure TForm2.ClientSocket1Disconnect(Sender: TObject;
  34.   Socket: TCustomWinSocket);
  35. begin
  36. timer2.Enabled:=true;
  37. end;
  38.  
  39. procedure TForm2.ClientSocket1Error(Sender: TObject;
  40.   Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
  41.   var ErrorCode: Integer);
  42. begin
  43. errorcode:=0;
  44. timer2.Enabled:=true;
  45. end;



però l'ho messo solo al socket principale e ad un altro, negli altri no.
p.s. (i vari socket si trovano anche in form diversi)

Ultima modifica effettuata da Track il 25/05/2011 alle 13:25
PM
Avatar
Ultimo (Member)
Guru


Messaggi: 882
Iscritto: 22/05/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 23:36
Martedì, 24/05/2011
sembra un ddos

Sai aiutarmi? - Track - 25/05/11 10:57


If ok Then GOTO Avanza else GOTO Inizia

PM
Avatar
Goblin (Member)
Expert


Messaggi: 375
Iscritto: 02/02/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 11:55
Mercoledì, 25/05/2011
mmm vediamo ... adesso chiedo alla mia sfera di cristallo ... appena ho una risposta ti faccio sapere :rofl:

Da quello che dici può essere di tutto, da un baco di programmazione, ad un virus del pc a... qualsiasi cosa. posta un pezzo di codice esplicativo!!!.
1) dove si verifica l'errore??
2) il server come gestisce i socket ??
3) i client come gestiscono i socket ??
4) hai altri programmi attivi nel server ??
5) troppo tempo ?? quanto ?? ore ? minuti?
6) se resta fermo succede ??
...
n) varie ed eventuali

come vedi mi sono fermato al punto 6, ma potevo benissimo andare avanti, se hai un errore devi documentarlo in modo che qualcuno ti possa aiutare, dalle informazioni che ci hai fornito si può tirare ad indovinare e non credo sia "bene" :nono: .
Aspettiamo altre info

G.

sto calcolando il tempo in cui il server rimane attivo e funzionante, tra un pò posto tutto - Track - 25/05/11 12:27
Topic modificato - Track - 25/05/11 13:24


Ibis redibis non morieris in bello
PM
Avatar
givex8 (Normal User)
Rookie


Messaggi: 28
Iscritto: 05/03/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 15:05
Mercoledì, 25/05/2011
Una mia ipotesi:

In OnDisconnect e in OnError del ClientSocket1, tu attivi il Timer2 che disattiva il ClientSocket2 e attiva in altro Timer che riattiva entrambi i socket...
Solo che se nel Timer2 non disattivi anche il ClientSocket1, quando poi il Timer1 va a reimpostare i parametri della connessione (Host, Porta), da errore perchè il ClientSocket1 è ancora attivo...

Prova così:

Codice sorgente - presumibilmente Delphi

  1. procedure TForm2.Timer2Timer(Sender: TObject);
  2. begin
  3. ClientSocket1.Active := False;
  4. ClientSocket2.Active := False;
  5. Timer1.Enabled := True;
  6. Timer2.Enabled := False;
  7. end;




Ciao

Ultima modifica effettuata da givex8 il 25/05/2011 alle 15:06
Ti ringrazio per la risposta, ;) ma ci avevo già pensato mentre attendevo che qualcuno rispondesse, ora vedo se crasha di nuovo il server - Track - 25/05/11 15:22
Ho quel codice in ogni OnDisconnect e in ogni OnError, l'errore per adesso non me lo sta dando - Track - 25/05/11 19:00
No niente, da l'errore - Track - 25/05/11 21:00
Non è cambiato assolutamente nulla.. - Track - 25/05/11 21:30
aspetto ancora risposte - Track - 29/05/11 17:19
PM